$(function () {
  $(".win-homepage").click(function () {
    if (document.all) {
      document.body.style.behavior = "url(#default#homepage)";
      document.body.setHomePage(document.URL);
    } else {
      alert("设置首页失败，请手动设置！");
    }
  });
  $(".win-favorite").click(function () {
    var sURL = document.URL;
    var sTitle = document.title;
    try {
      window.external.addFavorite(sURL, sTitle);
    } catch (e) {
      try {
        window.sidebar.addPanel(sTitle, sURL, "");
      } catch (e) {
        alert("加入收藏失败，请使用Ctrl+D进行添加");
      }
    }
  });
  $(".win-forward").click(function () {
    window.history.forward(1);
  });
  $(".win-back").click(function () {
    window.history.back(-1);
  });
  $(".win-backtop").click(function () {
    $("body,html").animate(
      {
        scrollTop: 0,
      },
      1000
    );
    return false;
  });
  $(".win-refresh").click(function () {
    window.location.reload();
  });
  $(".win-print").click(function () {
    window.print();
  });
  $(".win-close").click(function () {
    window.close();
  });
  $(".checkall").click(function () {
    var e = $(this);
    var name = e.attr("name");
    var checkfor = e.attr("checkfor");
    var type;
    if (checkfor != "" && checkfor != null && checkfor != undefined) {
      type = e.closest("form").find("input[name='" + checkfor + "']");
    } else {
      type = e.closest("form").find("input[type='checkbox']");
    }
    if (name == "checkall") {
      $(type).each(function (index, element) {
        element.checked = true;
      });
      e.attr("name", "ok");
    } else {
      $(type).each(function (index, element) {
        element.checked = false;
      });
      e.attr("name", "checkall");
    }
  });
  $(".dropdown-toggle").click(function () {
    $(this).closest(".button-group, .drop").addClass("open");
  });
  $(".dropdown-hover").hover(
    function () {
      $(".button-group, .drop").removeClass("open");
      $(this).closest(".button-group, .drop").addClass("open");
    },
    function () {}
  );
  $(document).bind("click", function (e) {
    if ($(e.target).closest(".button-group.open, .drop.open").length == 0) {
      $(".button-group, .drop").removeClass("open");
    }
  });
  $checkplaceholder = function () {
    var input = document.createElement("input");
    return "placeholder" in input;
  };
  $placeholder = function placeholder(element) {
    if (
      $(element).val() == "" &&
      ($(element).attr("placeholder") || $emptyplaceholder(element))
    ) {
      $(element).val($(element).attr("placeholder"));
      $(element).data("pintuerholder", $(element).css("color"));
      $(element).css("color", "rgb(169,169,169)");
      $(element).focus(function () {
        $hideplaceholder($(this));
      });
      $(element).blur(function () {
        $showplaceholder($(this));
      });
    }
  };
  if (!$checkplaceholder()) {
    $("textarea[placeholder], input[placeholder]").each(function (
      index,
      element
    ) {
      $placeholder(element);
    });
  }
  $emptyplaceholder = function (element) {
    var $content = $(element).val();
    return $content.length === 0 || $content == $(element).attr("placeholder");
  };
  $showplaceholder = function (element) {
    if (
      ($(element).val().length === 0 ||
        $(element).val() == $(element).attr("placeholder")) &&
      $(element).attr("type") != "password"
    ) {
      $(element).val($(element).attr("placeholder"));
      $(element).data("pintuerholder", $(element).css("color"));
      $(element).css("color", "rgb(169,169,169)");
    }
  };
  $hideplaceholder = function (element) {
    if ($(element).data("pintuerholder")) {
      $(element).val("");
      $(element).css("color", $(element).data("pintuerholder"));
      $(element).removeData("pintuerholder");
    }
  };
  $("textarea, input, select").blur(function () {
    var e = $(this);
    if (e.attr("data-validate")) {
      e.closest(".field").find(".input-help").remove();
      var $checkdata = e.attr("data-validate").split(",");
      var $checkvalue = e.val();
      var $checkstate = true;
      var $checktext = "";
      if (e.attr("placeholder") == $checkvalue) {
        $checkvalue = "";
      }
      if (
        $checkvalue != "" ||
        e.attr("data-validate").indexOf("required") >= 0
      ) {
        for (var i = 0; i < $checkdata.length; i++) {
          var $checktype = $checkdata[i].split(":");
          if (!$pintuercheck(e, $checktype[0], $checkvalue)) {
            $checkstate = false;
            $checktext = $checktext + "<li>" + $checktype[1] + "</li>";
          }
        }
      }
      if ($checkstate) {
        e.closest(".form-group").removeClass("check-error");
        e.parent().find(".input-help").remove();
        e.closest(".form-group").addClass("check-success");
      } else {
        e.closest(".form-group").removeClass("check-success");
        e.closest(".form-group").addClass("check-error");
        e.closest(".field").append(
          '<div class="input-help"><ul>' + $checktext + "</ul></div>"
        );
      }
    }
    if (!$checkplaceholder()) {
      $placeholder(e);
    }
  });
  $pintuercheck = function (element, type, value) {
    $pintu = value.replace(/(^\s*)|(\s*$)/g, "");
    switch (type) {
      case "required":
        return /[^(^\s*)|(\s*$)]/.test($pintu);
        break;
      case "chinese":
        return /^[\u0391-\uFFE5]+$/.test($pintu);
        break;
      case "number":
        return /^([+-]?)\d*\.?\d+$/.test($pintu);
        break;
      case "integer":
        return /^-?[1-9]\d*$/.test($pintu);
        break;
      case "plusinteger":
        return /^[1-9]\d*$/.test($pintu);
        break;
      case "unplusinteger":
        return /^-[1-9]\d*$/.test($pintu);
        break;
      case "znumber":
        return /^[1-9]\d*|0$/.test($pintu);
        break;
      case "fnumber":
        return /^-[1-9]\d*|0$/.test($pintu);
        break;
      case "double":
        return /^[-\+]?\d+(\.\d+)?$/.test($pintu);
        break;
      case "plusdouble":
        return /^[+]?\d+(\.\d+)?$/.test($pintu);
        break;
      case "unplusdouble":
        return /^-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*$/.test($pintu);
        break;
      case "english":
        return /^[A-Za-z]+$/.test($pintu);
        break;
      case "username":
        return /^[a-z]\w{3,}$/i.test($pintu);
        break;
      case "mobile":
        return /^\s*(15\d{9}|13\d{9}|14\d{9}|17\d{9}|18\d{9})\s*$/.test($pintu);
        break;
      case "phone":
        return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/.test(
          $pintu
        );
        break;
      case "tel":
        return (
          /^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}?$|15[89]\d{8}?$|170\d{8}?$|147\d{8}?$/.test(
            $pintu
          ) ||
          /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/.test(
            $pintu
          )
        );
        break;
      case "email":
        return /^[^@]+@[^@]+\.[^@]+$/.test($pintu);
        break;
      case "url":
        return /^https:|http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/.test(
          $pintu
        );
        break;
      case "ip":
        return /^[\d\.]{7,15}$/.test($pintu);
        break;
      case "qq":
        return /^[1-9]\d{4,10}$/.test($pintu);
        break;
      case "currency":
        return /^\d+(\.\d+)?$/.test($pintu);
        break;
      case "zipcode":
        return /^[1-9]\d{5}$/.test($pintu);
        break;
      case "chinesename":
        return /^[\u0391-\uFFE5]{2,15}$/.test($pintu);
        break;
      case "englishname":
        return /^[A-Za-z]{1,161}$/.test($pintu);
        break;
      case "age":
        return /^[1-99]?\d*$/.test($pintu);
        break;
      case "date":
        return /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/.test(
          $pintu
        );
        break;
      case "datetime":
        return /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/.test(
          $pintu
        );
        break;
      case "idcard":
        return /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/.test($pintu);
        break;
      case "bigenglish":
        return /^[A-Z]+$/.test($pintu);
        break;
      case "smallenglish":
        return /^[a-z]+$/.test($pintu);
        break;
      case "color":
        return /^#[0-9a-fA-F]{6}$/.test($pintu);
        break;
      case "ascii":
        return /^[\x00-\xFF]+$/.test($pintu);
        break;
      case "md5":
        return /^([a-fA-F0-9]{32})$/.test($pintu);
        break;
      case "zip":
        return /(.*)\.(rar|zip|7zip|tgz)$/.test($pintu);
        break;
      case "img":
        return /(.*)\.(jpg|gif|ico|jpeg|png)$/.test($pintu);
        break;
      case "doc":
        return /(.*)\.(doc|xls|docx|xlsx|pdf)$/.test($pintu);
        break;
      case "mp3":
        return /(.*)\.(mp3)$/.test($pintu);
        break;
      case "video":
        return /(.*)\.(rm|rmvb|wmv|avi|mp4|3gp|mkv)$/.test($pintu);
        break;
      case "flash":
        return /(.*)\.(swf|fla|flv)$/.test($pintu);
        break;
      case "radio":
        var radio = element
          .closest("form")
          .find('input[name="' + element.attr("name") + '"]:checked').length;
        return eval(radio == 1);
        break;
      default:
        var $test = type.split("#");
        if ($test.length > 1) {
          switch ($test[0]) {
            case "compare":
              return eval(Number($pintu) + $test[1]);
              break;
            case "regexp":
              return new RegExp($test[1], "gi").test($pintu);
              break;
            case "length":
              var $length;
              if (element.attr("type") == "checkbox") {
                $length = element
                  .closest("form")
                  .find(
                    'input[name="' + element.attr("name") + '"]:checked'
                  ).length;
              } else {
                $length = $pintu.replace(/[\u4e00-\u9fa5]/g, "***").length;
              }
              return eval($length + $test[1]);
              break;
            case "ajax":
              var $getdata;
              var $url = $test[1] + $pintu;
              $.ajaxSetup({
                async: false,
              });
              $.getJSON($url, function (data) {
                $getdata = data.getdata;
              });
              if ($getdata == "true") {
                return true;
              }
              break;
            case "repeat":
              return (
                $pintu ==
                jQuery('input[name="' + $test[1] + '"]')
                  .eq(0)
                  .val()
              );
              break;
            default:
              return true;
              break;
          }
          break;
        } else {
          return true;
        }
    }
  };
  $("form").submit(function () {
    $(this)
      .find(
        "input[data-validate],textarea[data-validate],select[data-validate]"
      )
      .trigger("blur");
    $(this)
      .find("input[placeholder],textarea[placeholder]")
      .each(function () {
        $hideplaceholder($(this));
      });
    var numError = $(this).find(".check-error").length;
    if (numError) {
      $(this)
        .find(".check-error")
        .first()
        .find(
          "input[data-validate],textarea[data-validate],select[data-validate]"
        )
        .first()
        .focus()
        .select();
      return false;
    }
  });
  $(".form-reset").click(function () {
    $(this).closest("form").find(".input-help").remove();
    $(this).closest("form").find(".form-submit").removeAttr("disabled");
    $(this).closest("form").find(".form-group").removeClass("check-error");
    $(this).closest("form").find(".form-group").removeClass("check-success");
  });
  $(".tab .tab-nav li").each(function () {
    var e = $(this);
    var trigger = e.closest(".tab").attr("data-toggle");
    if (trigger == "hover") {
      e.mouseover(function () {
        $showtabs(e);
      });
      e.click(function () {
        return false;
      });
    } else {
      e.click(function () {
        $showtabs(e);
        return false;
      });
    }
  });
  $(".slidemenu .icon-slidemenu").click(function () {
    $(".slidemenu .slidemenu-left,.slidemenu .slidemenu-right").toggle("slow");
  });
  $.fn.ajaxSubmit = function (fn) {
    $(this)
      .find(
        "input[data-validate],textarea[data-validate],select[data-validate]"
      )
      .trigger("blur");
    $(this)
      .find("input[placeholder],textarea[placeholder]")
      .each(function () {
        $hideplaceholder($(this));
      });
    var numError = $(this).find(".check-error").length;
    if (numError) {
      $(this)
        .find(".check-error")
        .first()
        .find(
          "input[data-validate],textarea[data-validate],select[data-validate]"
        )
        .first()
        .focus()
        .select();
      return false;
    }
    if (fn && typeof fn == "function") {
      fn();
    }
  };
  $showtabs = function (e) {
    var detail = e.children("a").attr("href");
    e.closest(".tab .tab-nav").find("li").removeClass("active");
    e.closest(".tab").find(".tab-body .tab-panel").removeClass("active");
    e.addClass("active");
    $(detail).addClass("active");
  };
  $(".dialogs").each(function () {
    var e = $(this);
    var trigger = e.attr("data-toggle");
    if (trigger == "hover") {
      e.mouseover(function () {
        $showdialogs(e);
      });
    } else {
      if (trigger == "click") {
        e.click(function () {
          $showdialogs(e);
        });
      }
    }
  });
  $showdialogs = function (e) {
    var trigger = e.attr("data-toggle");
    var getid = e.attr("data-target");
    var data = e.attr("data-url");
    var mask = e.attr("data-mask");
    var width = e.attr("data-width");
    var detail = "";
    var masklayout = $('<div class="dialog-mask"></div>');
    var temp = "";
    if (width == null) {
      width = "80%";
    }
    if (mask == "1") {
      $("body").append(masklayout);
    }
    detail =
      '<div class="dialog-win" style="position:fixed;width:' +
      width +
      ';z-index:11;">';
    if (getid != null) {
      detail = detail + $(getid).html();
      temp = $(getid).detach();
    }
    if (data != null) {
      detail =
        detail +
        $.ajax({
          url: data,
          async: false,
        }).responseText;
    }
    detail = detail + "</div>";
    var win = $(detail);
    win.find(".dialog").addClass("open");
    $("body").append(win);
    var x = parseInt($(window).width() - win.outerWidth()) / 2;
    var y = parseInt($(window).height() - win.outerHeight()) / 2;
    if (y <= 10) {
      y = 10;
    }
    win.css({
      left: x,
      top: y,
    });
    win.find(".dialog-close,.close").each(function () {
      $(this).click(function () {
        win.remove();
        $(".dialog-mask").remove();
        $("body").prepend(temp);
      });
    });
    masklayout.click(function () {
      win.remove();
      $(this).remove();
      $("body").prepend(temp);
    });
  };
  $(".tips").each(function () {
    var e = $(this);
    var title = e.attr("title");
    var trigger = e.attr("data-toggle");
    e.attr("title", "");
    if (trigger == "" || trigger == null) {
      trigger = "hover";
    }
    if (trigger == "hover") {
      e.mouseover(function () {
        $showtips(e, title);
      });
    } else {
      if (trigger == "click") {
        e.click(function () {
          $showtips(e, title);
        });
      } else {
        if (trigger == "show") {
          e.ready(function () {
            $showtips(e, title);
          });
        }
      }
    }
  });
  $showtips = function (e, title) {
    var trigger = e.attr("data-toggle");
    var place = e.attr("data-place");
    var width = e.attr("data-width");
    var css = e.attr("data-style");
    var image = e.attr("data-image");
    var content = e.attr("content");
    var getid = e.attr("data-target");
    var data = e.attr("data-url");
    var x = 0;
    var y = 0;
    var html = "";
    var detail = "";
    if (image != null) {
      detail = detail + '<img class="image" src="' + image + '" />';
    }
    if (content != null) {
      detail = detail + '<p class="tip-body">' + content + "</p>";
    }
    if (getid != null) {
      detail = detail + $(getid).html();
    }
    if (data != null) {
      detail =
        detail +
        $.ajax({
          url: data,
          async: false,
        }).responseText;
    }
    if (title != null && title != "") {
      if (detail != null && detail != "") {
        detail =
          '<p class="tip-title"><strong>' + title + "</strong></p>" + detail;
      } else {
        detail = '<p class="tip-line">' + title + "</p>";
      }
      e.attr("title", "");
    }
    detail = '<div class="tip">' + detail + "</div>";
    html = $(detail);
    $("body").append(html);
    if (width != null) {
      html.css("width", width);
    }
    if (place == "" || place == null) {
      place = "top";
    }
    if (place == "left") {
      x = e.offset().left - html.outerWidth() - 5;
      y = e.offset().top - html.outerHeight() / 2 + e.outerHeight() / 2;
    } else {
      if (place == "top") {
        x = e.offset().left - html.outerWidth() / 2 + e.outerWidth() / 2;
        y = e.offset().top - html.outerHeight() - 5;
      } else {
        if (place == "right") {
          x = e.offset().left + e.outerWidth() + 5;
          y = e.offset().top - html.outerHeight() / 2 + e.outerHeight() / 2;
        } else {
          if (place == "bottom") {
            x = e.offset().left - html.outerWidth() / 2 + e.outerWidth() / 2;
            y = e.offset().top + e.outerHeight() + 5;
          }
        }
      }
    }
    if (css != "") {
      html.addClass(css);
    }
    html.css({
      left: x + "px",
      top: y + "px",
      position: "absolute",
    });
    if (trigger == "hover" || trigger == "click" || trigger == null) {
      e.mouseout(function () {
        html.remove();
        e.attr("title", title);
      });
    }
  };
  $(".alert .close").each(function () {
    $(this).click(function () {
      $(this).closest(".alert").remove();
    });
  });
  $(".radio label").each(function () {
    var e = $(this);
    e.click(function () {
      e.closest(".radio").find("label").removeClass("active");
      e.addClass("active");
    });
  });
  $(".checkbox label").each(function () {
    var e = $(this);
    e.click(function () {
      if (e.find("input").is(":checked")) {
        e.addClass("active");
      } else {
        e.removeClass("active");
      }
    });
  });
  $(".collapse .panel-head").each(function () {
    var e = $(this);
    e.click(function () {
      e.closest(".collapse").find(".panel").removeClass("active");
      e.closest(".panel").addClass("active");
    });
  });
  $(".collapse-toggle .panel-head").each(function () {
    var e = $(this);
    e.click(function () {
      e.closest(".panel").toggleClass("active");
    });
  });
  $(".icon-navicon").each(function () {
    var e = $(this);
    var target = e.attr("data-target");
    e.click(function () {
      $(target).toggleClass("nav-navicon");
    });
  });
  $(".banner").each(function () {
    var e = $(this);
    var pointer = e.attr("data-pointer");
    var interval = e.attr("data-interval");
    var style = e.attr("data-style");
    var items = e.attr("data-item");
    var items_s = e.attr("data-small");
    var items_m = e.attr("data-middle");
    var items_b = e.attr("data-big");
    var num = e.find(".carousel .item").length;
    var win = $(window).width();
    var i = 1;
    if (interval == null) {
      interval = 5;
    }
    if (items == null || items < 1) {
      items = 1;
    }
    if (items_s != null && win > 760) {
      items = items_s;
    }
    if (items_m != null && win > 1000) {
      items = items_m;
    }
    if (items_b != null && win > 1200) {
      items = items_b;
    }
    var itemWidth = Math.ceil(e.outerWidth() / items);
    var page = Math.ceil(num / items);
    e.find(".carousel .item").css("width", itemWidth + "px");
    e.find(".carousel").css("width", itemWidth * num + "px");
    var carousel = function () {
      i++;
      if (i > page) {
        i = 1;
      }
      $showbanner(e, i, items, num);
    };
    var play = setInterval(carousel, interval * 600);
    e.mouseover(function () {
      clearInterval(play);
    });
    e.mouseout(function () {
      play = setInterval(carousel, interval * 600);
    });
    if (pointer != 0 && page > 1) {
      var point = '<ul class="pointer"><li value="1" class="active"></li>';
      for (var j = 1; j < page; j++) {
        point = point + ' <li value="' + (j + 1) + '"></li>';
      }
      point = point + "</ul>";
      var pager = $(point);
      if (style != null) {
        pager.addClass(style);
      }
      e.append(pager);
      pager.css("right", "0px");
      pager.find("li").click(function () {
        $showbanner(e, $(this).val(), items, num);
      });
      var lefter = $("");
      var righter = $("");
      if (style != null) {
        lefter.addClass(style);
        righter.addClass(style);
      }
      e.append(lefter);
      e.append(righter);
      lefter.click(function () {
        i--;
        if (i < 1) {
          i = page;
        }
        $showbanner(e, i, items, num);
      });
      righter.click(function () {
        i++;
        if (i > page) {
          i = 1;
        }
        $showbanner(e, i, items, num);
      });
    }
  });
  $showbanner = function (e, i, items, num) {
    var after = 0,
      leftx = 0;
    leftx = -Math.ceil(e.outerWidth() / items) * items * (i - 1);
    if (i * items > num) {
      after = i * items - num;
      leftx = -Math.ceil(e.outerWidth() / items) * (num - items);
    }
    e.find(".carousel")
      .stop(true, true)
      .animate(
        {
          left: leftx + "px",
        },
        800
      );
    e.find(".pointer li").removeClass("active");
    e.find(".pointer li")
      .eq(i - 1)
      .addClass("active");
  };
  $(".spy a").each(function () {
    var e = $(this);
    var t = e.closest(".spy");
    var target = t.attr("data-target");
    var top = t.attr("data-offset-spy");
    var thistarget = "";
    var thistop = "";
    if (top == null) {
      top = 0;
    }
    if (target == null) {
      thistarget = $(window);
    } else {
      thistarget = $(target);
    }
    thistarget.bind("scroll", function () {
      if (target == null) {
        thistop =
          $(e.attr("href")).offset().top -
          $(window).scrollTop() -
          parseInt(top);
      } else {
        thistop =
          $(e.attr("href")).offset().top -
          thistarget.offset().top -
          parseInt(top);
      }
      if (thistop < 0) {
        t.find("li").removeClass("active");
        e.parents("li").addClass("active");
      }
    });
  });
  $(".fixed").each(function () {
    var e = $(this);
    var style = e.attr("data-style");
    var top = e.attr("data-offset-fixed");
    if (top == null) {
      top = e.offset().top;
    } else {
      top = e.offset().top - parseInt(top);
    }
    if (style == null) {
      style = "fixed-top";
    }
    $(window).bind("scroll", function () {
      var thistop = top - $(window).scrollTop();
      if (style == "fixed-top" && thistop < 0) {
        e.addClass("fixed-top");
      } else {
        e.removeClass("fixed-top");
      }
      var thisbottom = top - $(window).scrollTop() - $(window).height();
      if (style == "fixed-bottom" && thisbottom > 0) {
        e.addClass("fixed-bottom");
      } else {
        e.removeClass("fixed-bottom");
      }
    });
  });
  $(".wx-share-btn").click(function () {
    $(".wx-share").show();
  });
  $(".wx-share").click(function () {
    $(this).hide();
  });
  $(".wx-comments-input").keydown(function () {
    var txt_num = 120 - parseInt($(this).val().length);
    $(".wx-comments-num").html(txt_num);
  });
});
